AMI を S3 に保存するときの制限事項を図解してみた
AMI を S3 へストア(アップロード)、S3 から AMI のリストア(ダウンロード)の制限事項について絵を描いて整理しました。
基本的な説明
AMI を S3 へアップロードし保存する方法は以下のブログをご確認ください。
- AMIをS3に明示的なオブジェクトとして保存してみた!! [いつの間にできるようになっていたんだぃ!?] | DevelopersIO
- AMI のフルバックアップを可能な限り安価に長期間保存したくて S3 Glacier Deep Archive に保存してみた | DevelopersIO
制限事項
AMI を S3 へストアイメージ(アップロード)、リストアイメージ(ダウンロード)に関する制限事項は以下のドキュメントに記載があります。 制限事項の確認先となるとサービスクォータのドキュメントが最初に思いつきますが、EC2 と S3 の項目には本件の制限事項は記載されておりません。
Store and restore an AMI using S3 - Amazon Elastic Compute Cloud
主要な制限事項について図とともに紹介します。※ 2023 年 10 月 13 日時点の情報です。
ストア(アップロード)の制限
同時に転送可能な数には制限があります。スナップショットのイメージサイズが合計 600GB までは複数同時に転送処理を実行できます。
仮に①と②をストアイメージを実行する場合、合計で 500GB なので複数同時実行が可能です。この状態で③の 200GB の転送処理は①+②+③の合計で 700GB になるため 600GB 制限により③の処理は開始できません。②の 200GB の転送処理が終了したタイミングで制限の枠が空き、③の 200GB の転送処理を開始できます。
同様のケースで③が 400GB ある場合は、仮に②の 200GB の転送処理が終了しても①+③の合計で 700GB になるため、③の転送処理を開始できません。
600 GB を超えるサイズを転送できますが、1 つの転送で合計 600GB 制限を超えているため、これ以上追加で同時実行はできません。
1 つのスナップショットの上限容量は圧縮前のサイズで 5TB までです。あまりにも巨大なスナップショットですと S3 で塩漬けにしたいと思ってもできない可能性があります。
リストア(ダウンロード)の制限
同時に転送可能な数には制限があります。スナップショットのイメージサイズが合計 300GB までは複数同時に転送処理を実行です。
リストア時に AMI ID は変更される
S3 へストアする前の AMI ID と同じ AMI ID でリストアはできません。
AMI ID が重要な要素であれば AMI エイリアスをつけること回避できないかご検討ください。
Native parameter support for Amazon Machine Image IDs - AWS Systems Manager
PV AMI 非サポート
古い世代の PV AMI は S3 へストアできません。
AMI 一覧でいうとここから見分けられます。
同じバケットに同じ AMI を複数保存できない
同じバケットに同じ AMI を複数保存できません。S3 に保存時の名前が自動的に [AMI ID].bin
形式になるため、上書き防止の措置なのではないかと個人的には思っています。
実行時には以下のメッセージが出力されました。
$ aws ec2 create-store-image-task \ --image-id ami-0c258e9b0bdb177de \ --bucket ami-archives-tokyo An error occurred (InvalidRequest) when calling the CreateStoreImageTask operation: The AMI already exists in the bucket. You can't create multiple copies of an AMI in the same S3 bucket.
おわりに
同時実行の制限事項がわかりづらかったので絵に描いてみました。AMI の保存手段として S3 へ保存することでストレージコストは圧縮できることは頭の片隅に入れておいてもよいのではないでしょうか。
AMI をまとめて S3 に保存したいとなっても制限があります。半永久的に保存しないといけないものでもない限りは、AMI を削除してお片付けるする方が工数もかからず良いのではないかと思います。